home *** CD-ROM | disk | FTP | other *** search
/ Software of the Month Club 2000 October / Software of the Month - Ultimate Collection Shareware 277.iso / pc / PROGRAMS / UTILITY / WINLINUX / DATA1.CAB / programs_-_include / LINUX / NFS.H < prev    next >
C/C++ Source or Header  |  1999-09-17  |  4KB  |  227 lines

  1. /*
  2.  * NFS protocol definitions
  3.  */
  4. #ifndef _LINUX_NFS_H
  5. #define _LINUX_NFS_H
  6.  
  7. #include <linux/sunrpc/msg_prot.h>
  8.  
  9. #define NFS_PORT    2049
  10. #define NFS_MAXDATA    8192
  11. #define NFS_MAXPATHLEN    1024
  12. #define NFS_MAXNAMLEN    255
  13. #define NFS_MAXGROUPS    16
  14. #define NFS_FHSIZE    32
  15. #define NFS_COOKIESIZE    4
  16. #define NFS_FIFO_DEV    (-1)
  17. #define NFSMODE_FMT    0170000
  18. #define NFSMODE_DIR    0040000
  19. #define NFSMODE_CHR    0020000
  20. #define NFSMODE_BLK    0060000
  21. #define NFSMODE_REG    0100000
  22. #define NFSMODE_LNK    0120000
  23. #define NFSMODE_SOCK    0140000
  24. #define NFSMODE_FIFO    0010000
  25.  
  26.     
  27. enum nfs_stat {
  28.     NFS_OK = 0,
  29.     NFSERR_PERM = 1,
  30.     NFSERR_NOENT = 2,
  31.     NFSERR_IO = 5,
  32.     NFSERR_NXIO = 6,
  33.     NFSERR_EAGAIN = 11,
  34.     NFSERR_ACCES = 13,
  35.     NFSERR_EXIST = 17,
  36.     NFSERR_XDEV = 18,
  37.     NFSERR_NODEV = 19,
  38.     NFSERR_NOTDIR = 20,
  39.     NFSERR_ISDIR = 21,
  40.     NFSERR_INVAL = 22,    /* that Sun forgot */
  41.     NFSERR_FBIG = 27,
  42.     NFSERR_NOSPC = 28,
  43.     NFSERR_ROFS = 30,
  44.     NFSERR_OPNOTSUPP = 45,
  45.     NFSERR_NAMETOOLONG = 63,
  46.     NFSERR_NOTEMPTY = 66,
  47.     NFSERR_DQUOT = 69,
  48.     NFSERR_STALE = 70,
  49.     NFSERR_WFLUSH = 99
  50. };
  51.  
  52. enum nfs_ftype {
  53.     NFNON = 0,
  54.     NFREG = 1,
  55.     NFDIR = 2,
  56.     NFBLK = 3,
  57.     NFCHR = 4,
  58.     NFLNK = 5,
  59.     NFSOCK = 6,
  60.     NFBAD = 7,
  61.     NFFIFO = 8
  62. };
  63.  
  64. struct nfs_fh {
  65.     char            data[NFS_FHSIZE];
  66. };
  67.  
  68. #define NFS_PROGRAM        100003
  69. #define NFS_VERSION        2
  70. #define NFSPROC_NULL        0
  71. #define NFSPROC_GETATTR        1
  72. #define NFSPROC_SETATTR        2
  73. #define NFSPROC_ROOT        3
  74. #define NFSPROC_LOOKUP        4
  75. #define NFSPROC_READLINK    5
  76. #define NFSPROC_READ        6
  77. #define NFSPROC_WRITECACHE    7
  78. #define NFSPROC_WRITE        8
  79. #define NFSPROC_CREATE        9
  80. #define NFSPROC_REMOVE        10
  81. #define NFSPROC_RENAME        11
  82. #define NFSPROC_LINK        12
  83. #define NFSPROC_SYMLINK        13
  84. #define NFSPROC_MKDIR        14
  85. #define NFSPROC_RMDIR        15
  86. #define NFSPROC_READDIR        16
  87. #define NFSPROC_STATFS        17
  88.  
  89. /* Mount support for NFSroot */
  90. #ifdef __KERNEL__
  91. #define NFS_MNT_PROGRAM        100005
  92. #define NFS_MNT_VERSION        1
  93. #define NFS_MNT_PORT        627
  94. #define NFS_MNTPROC_MNT        1
  95. #define NFS_MNTPROC_UMNT    3
  96. #endif
  97.  
  98. #if defined(__KERNEL__) || defined(NFS_NEED_KERNEL_TYPES)
  99.  
  100. extern struct rpc_program    nfs_program;
  101. extern struct rpc_stat        nfs_rpcstat;
  102.  
  103. struct nfs_time {
  104.     __u32            seconds;
  105.     __u32            useconds;
  106. };
  107.  
  108. struct nfs_fattr {
  109.     enum nfs_ftype        type;
  110.     __u32            mode;
  111.     __u32            nlink;
  112.     __u32            uid;
  113.     __u32            gid;
  114.     __u32            size;
  115.     __u32            blocksize;
  116.     __u32            rdev;
  117.     __u32            blocks;
  118.     __u32            fsid;
  119.     __u32            fileid;
  120.     struct nfs_time        atime;
  121.     struct nfs_time        mtime;
  122.     struct nfs_time        ctime;
  123. };
  124.  
  125. struct nfs_sattr {
  126.     __u32            mode;
  127.     __u32            uid;
  128.     __u32            gid;
  129.     __u32            size;
  130.     struct nfs_time        atime;
  131.     struct nfs_time        mtime;
  132. };
  133.  
  134. struct nfs_fsinfo {
  135.     __u32            tsize;
  136.     __u32            bsize;
  137.     __u32            blocks;
  138.     __u32            bfree;
  139.     __u32            bavail;
  140. };
  141.  
  142. struct nfs_writeargs {
  143.     struct nfs_fh *        fh;
  144.     __u32            offset;
  145.     __u32            count;
  146.     const void *        buffer;
  147. };
  148.  
  149. #ifdef NFS_NEED_XDR_TYPES
  150.  
  151. struct nfs_sattrargs {
  152.     struct nfs_fh *        fh;
  153.     struct nfs_sattr *    sattr;
  154. };
  155.  
  156. struct nfs_diropargs {
  157.     struct nfs_fh *        fh;
  158.     const char *        name;
  159. };
  160.  
  161. struct nfs_readargs {
  162.     struct nfs_fh *        fh;
  163.     __u32            offset;
  164.     __u32            count;
  165.     void *            buffer;
  166. };
  167.  
  168. struct nfs_createargs {
  169.     struct nfs_fh *        fh;
  170.     const char *        name;
  171.     struct nfs_sattr *    sattr;
  172. };
  173.  
  174. struct nfs_renameargs {
  175.     struct nfs_fh *        fromfh;
  176.     const char *        fromname;
  177.     struct nfs_fh *        tofh;
  178.     const char *        toname;
  179. };
  180.  
  181. struct nfs_linkargs {
  182.     struct nfs_fh *        fromfh;
  183.     struct nfs_fh *        tofh;
  184.     const char *        toname;
  185. };
  186.  
  187. struct nfs_symlinkargs {
  188.     struct nfs_fh *        fromfh;
  189.     const char *        fromname;
  190.     const char *        topath;
  191.     struct nfs_sattr *    sattr;
  192. };
  193.  
  194. struct nfs_readdirargs {
  195.     struct nfs_fh *        fh;
  196.     __u32            cookie;
  197.     void *            buffer;
  198.     unsigned int        bufsiz;
  199. };
  200.  
  201. struct nfs_diropok {
  202.     struct nfs_fh *        fh;
  203.     struct nfs_fattr *    fattr;
  204. };
  205.  
  206. struct nfs_readres {
  207.     struct nfs_fattr *    fattr;
  208.     unsigned int        count;
  209. };
  210.  
  211. struct nfs_readlinkres {
  212.     char **            string;
  213.     unsigned int *        lenp;
  214.     unsigned int        maxlen;
  215.     void *            buffer;
  216. };
  217.  
  218. struct nfs_readdirres {
  219.     void *            buffer;
  220.     unsigned int        bufsiz;
  221. };
  222.  
  223. #endif /* NFS_NEED_XDR_TYPES */
  224. #endif /* __KERNEL__ */
  225.  
  226. #endif
  227.